﻿using System;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
using System.Text;
using System.Transactions;
using System.Data;
using System.Configuration;
using System.Data.EntityClient;
using MySql.Data.MySqlClient;
using CajaChica.Interfaces;
using CajaChica.Entidades;
namespace CajaChica.Clases
{
    class clsUsuarios
    {
        cajaEntities objCajaEntidades;

        public clsUsuarios()
        { 
        
        }
        public void Guardar(string nombre, string contrasena)
        {
            objCajaEntidades = new cajaEntities();
            usuarios usuario = new usuarios 
            {
                usuario = nombre,
                contrasena = contrasena
            };
            objCajaEntidades.AddTousuarios(usuario);
            objCajaEntidades.SaveChanges();
        }

        public void GuardarCambios(int id, string nombre, string contrasena)
        {
            objCajaEntidades = new cajaEntities();
            usuarios usuario = objCajaEntidades.usuarios.FirstOrDefault(
                a => a.id == id);
            usuario.usuario = nombre;
            usuario.contrasena = contrasena;
            objCajaEntidades.SaveChanges();
        }

        public void Eliminar(int id)
        {
            objCajaEntidades = new cajaEntities();
            EntityTransaction transaccion = null;
            usuarios usuario = objCajaEntidades.usuarios.FirstOrDefault(
            a => a.id == id);
            objCajaEntidades.DeleteObject(usuario);
            try
            {
                transaccion = (EntityTransaction)objCajaEntidades.Connection.BeginTransaction();
                objCajaEntidades.SaveChanges();
                transaccion.Commit();
            }
            catch(EntityException ex)
            {
                string mensaje = ex.Message;
                transaccion.Rollback();
            }
        }

        public ArrayList CargarDatosGridView()
        {
            ArrayList lista = new ArrayList();
            objCajaEntidades = new cajaEntities();
            var listaUsuarios = from u in objCajaEntidades.usuarios
                                select new { USUARIO = u.usuario, CONTRASEÑA = u.contrasena, ID = u.id };
            foreach (var datos in listaUsuarios)
            {
                lista.Add(datos);
            }
            return lista;
        }

        public void CargarDatosComboBox()
        {
            
        }

        public void Buscar(string criterio)
        {
            
        }

        public DataSet CargarDatosCrystalReports(int id)
        {
            DataSet ds = new DataSet();
            cajaEntities ca = new cajaEntities();
            string cad = ((EntityConnection)ca.Connection).StoreConnection.ConnectionString;
            string query = "select * from usuarios where id = " + id + 
              " order by usuario;";
            MySqlConnection cn = new MySqlConnection(cad);
            MySqlDataAdapter da = new MySqlDataAdapter(query, cn);
            da.Fill(ds, "usuarios");
            return ds;
        }

        public DataSet CargarDatosCrystalReports()
        {
            DataSet ds = new DataSet();
            cajaEntities ca = new cajaEntities();
            string cad = ((EntityConnection)ca.Connection).StoreConnection.ConnectionString;
            string query = "select * from usuarios " +
              " order by usuario;";
            MySqlConnection cn = new MySqlConnection(cad);
            MySqlDataAdapter da = new MySqlDataAdapter(query, cn);
            da.Fill(ds, "usuarios");
            return ds;
        }

        private int codigo;
        public int CodigoUsuario
        {
            get
            {
                return codigo;
            }
            set
            {
                codigo = value;
            }
        }
    }
}
